iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

步驟 1: 建立礦物方塊
首先,我們需要建立紅寶石礦的方塊類別:

java
// RubyOreBlock.java
public class RubyOreBlock extends Block {
    public RubyOreBlock() {
        super(Properties.of()
                .mapColor(MapColor.STONE)
                .requiresCorrectToolForDrops()
                .strength(3.0F, 3.0F)
                .sound(SoundType.STONE));
    }
    
    @Override
    public int getExpDrop(BlockState state, LevelReader level, RandomSource random, BlockPos pos, int fortuneLevel, int silkTouchLevel) {
        return silkTouchLevel == 0 ? 1 + random.nextInt(5) : 0;
    }
}

步驟 2: 註冊方塊與物品
在模組的主類別或專門的註冊類別中註冊我們的礦物:

java
// ModBlocks.java
public class ModBlocks {
    public static final DeferredRegister<Block> BLOCKS = 
        DeferredRegister.create(ForgeRegistries.BLOCKS, "rubymod");
    
    public static final RegistryObject<Block> RUBY_ORE = BLOCKS.register("ruby_ore", 
        RubyOreBlock::new);
}

// ModItems.java  
public class ModItems {
    public static final DeferredRegister<Item> ITEMS = 
        DeferredRegister.create(ForgeRegistries.ITEMS, "rubymod");
    
    public static final RegistryObject<Item> RUBY_ORE_ITEM = ITEMS.register("ruby_ore",
        () -> new BlockItem(ModBlocks.RUBY_ORE.get(), new Item.Properties()));
}

步驟 3: 建立世界生成配置檔案
在 src/main/resources/data/rubymod/worldgen/configured_feature/ 目錄下建立 ruby_ore.json:

json
{
  "type": "minecraft:ore",
  "config": {
    "discard_chance_on_air_exposure": 0.0,
    "size": 8,
    "targets": [
      {
        "state": {
          "Name": "rubymod:ruby_ore"
        },
        "target": {
          "predicate_type": "minecraft:block_match", 
          "block": "minecraft:stone"
        }
      }
    ]
  }
}

參數解析
type: 使用原版的礦石生成器

discard_chance_on_air_exposure: 暴露在空氣中的丟棄機率(0.0 = 永不丟棄)

size: 礦脈大小(8 與鑽石相同)

targets: 定義生成在哪些方塊上

明日預告
明天我們將繼續配置礦物的放置規則和生物群系修改器,讓紅寶石礦真正在世界中生成!


上一篇
D23:礦物生成
下一篇
D25:礦物生成(2)
系列文
Minecraft:使用AI工具來創造我的世界吧!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言